<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
        严格模式: 语法比普通js环境更严格的一种模式
        */

        //开启严格模式:
        //    "use strict";


        //严格模式和普通模式的区别:
        /* 1.必须声明后才能使用变量
            2.函数参数,对象属性禁止重名
            3.this指向为undefined
            4.禁止删除变量和对象中不可删除的属性，显示报错
            5.函数必须声明在整个脚本或函数层面
        */

        // 严格模式使用场景 ?
        /* 
        1.后期编译之后的代码自动加上 严格模式
         2.前端模块化的时候会自动是一个严格模式 
         */



         
        // function fn(){
        //     var  a = 10;
        // }
        // fn();
        // console.log(a);
        // 必须声明之后才能使用变量 
        // a = 10;
        // console.log(a);



        // 相同的形参 

        // function fn(a,a){
        //     console.log(a);
        // }

        // fn(10,20);


        // 事件 里的this
        // 事件源 
        // document.onclick = function(){
        //     // console.log(this);
        //     // var that = this;
        //     // setTimeout(function(){
        //     //     console.log(this);
        //     //     console.log(that);
        //     // }, 1000);
        //     var arr = [1,2,3];
        //     arr.forEach(function(item){
        //         console.log(this);
        //     })
        // }
    </script>
</body>

</html>